/**
 * Copyright (c) 2016-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */
'use strict';

 // This Syntax object defines a number of constants that flow-parser uses.

module.exports = {
  AnyTypeAnnotation: 'AnyTypeAnnotation',
  ArrayExpression: 'ArrayExpression',
  ArrayPattern: 'ArrayPattern',
  ArrayTypeAnnotation: 'ArrayTypeAnnotation',
  ArrowFunctionExpression: 'ArrowFunctionExpression',
  AssignmentExpression: 'AssignmentExpression',
  BinaryExpression: 'BinaryExpression',
  BlockStatement: 'BlockStatement',
  BooleanTypeAnnotation: 'BooleanTypeAnnotation',
  BreakStatement: 'BreakStatement',
  CallExpression: 'CallExpression',
  CatchClause: 'CatchClause',
  ClassBody: 'ClassBody',
  ClassDeclaration: 'ClassDeclaration',
  ClassExpression: 'ClassExpression',
  ClassImplements: 'ClassImplements',
  ClassProperty: 'ClassProperty',
  ComprehensionBlock: 'ComprehensionBlock',
  ComprehensionExpression: 'ComprehensionExpression',
  ConditionalExpression: 'ConditionalExpression',
  ContinueStatement: 'ContinueStatement',
  DebuggerStatement: 'DebuggerStatement',
  DeclareClass: 'DeclareClass',
  DeclareFunction: 'DeclareFunction',
  DeclareModule: 'DeclareModule',
  DeclareVariable: 'DeclareVariable',
  DoWhileStatement: 'DoWhileStatement',
  EmptyStatement: 'EmptyStatement',
  ExportDeclaration: 'ExportDeclaration',
  ExportBatchSpecifier: 'ExportBatchSpecifier',
  ExportSpecifier: 'ExportSpecifier',
  ExpressionStatement: 'ExpressionStatement',
  ForInStatement: 'ForInStatement',
  ForOfStatement: 'ForOfStatement',
  ForStatement: 'ForStatement',
  FunctionDeclaration: 'FunctionDeclaration',
  FunctionExpression: 'FunctionExpression',
  FunctionTypeAnnotation: 'FunctionTypeAnnotation',
  FunctionTypeParam: 'FunctionTypeParam',
  GenericTypeAnnotation: 'GenericTypeAnnotation',
  Identifier: 'Identifier',
  IfStatement: 'IfStatement',
  ImportDeclaration: 'ImportDeclaration',
  ImportDefaultSpecifier: 'ImportDefaultSpecifier',
  ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',
  ImportSpecifier: 'ImportSpecifier',
  InterfaceDeclaration: 'InterfaceDeclaration',
  InterfaceExtends: 'InterfaceExtends',
  IntersectionTypeAnnotation: 'IntersectionTypeAnnotation',
  LabeledStatement: 'LabeledStatement',
  Literal: 'Literal',
  LogicalExpression: 'LogicalExpression',
  MemberExpression: 'MemberExpression',
  MethodDefinition: 'MethodDefinition',
  NewExpression: 'NewExpression',
  NullableTypeAnnotation: 'NullableTypeAnnotation',
  NumberTypeAnnotation: 'NumberTypeAnnotation',
  ObjectExpression: 'ObjectExpression',
  ObjectPattern: 'ObjectPattern',
  ObjectTypeAnnotation: 'ObjectTypeAnnotation',
  ObjectTypeCallProperty: 'ObjectTypeCallProperty',
  ObjectTypeIndexer: 'ObjectTypeIndexer',
  ObjectTypeProperty: 'ObjectTypeProperty',
  Program: 'Program',
  Property: 'Property',
  QualifiedTypeIdentifier: 'QualifiedTypeIdentifier',
  ReturnStatement: 'ReturnStatement',
  SequenceExpression: 'SequenceExpression',
  SpreadElement: 'SpreadElement',
  SpreadProperty: 'SpreadProperty',
  StringLiteralTypeAnnotation: 'StringLiteralTypeAnnotation',
  StringTypeAnnotation: 'StringTypeAnnotation',
  SwitchCase: 'SwitchCase',
  SwitchStatement: 'SwitchStatement',
  TaggedTemplateExpression: 'TaggedTemplateExpression',
  TemplateElement: 'TemplateElement',
  TemplateLiteral: 'TemplateLiteral',
  ThisExpression: 'ThisExpression',
  ThrowStatement: 'ThrowStatement',
  TupleTypeAnnotation: 'TupleTypeAnnotation',
  TryStatement: 'TryStatement',
  TypeAlias: 'TypeAlias',
  TypeAnnotation: 'TypeAnnotation',
  TypeCastExpression: 'TypeCastExpression',
  TypeofTypeAnnotation: 'TypeofTypeAnnotation',
  TypeParameterDeclaration: 'TypeParameterDeclaration',
  TypeParameterInstantiation: 'TypeParameterInstantiation',
  UnaryExpression: 'UnaryExpression',
  UnionTypeAnnotation: 'UnionTypeAnnotation',
  UpdateExpression: 'UpdateExpression',
  VariableDeclaration: 'VariableDeclaration',
  VariableDeclarator: 'VariableDeclarator',
  VoidTypeAnnotation: 'VoidTypeAnnotation',
  WhileStatement: 'WhileStatement',
  WithStatement: 'WithStatement',
  JSXIdentifier: 'JSXIdentifier',
  JSXNamespacedName: 'JSXNamespacedName',
  JSXMemberExpression: 'JSXMemberExpression',
  JSXEmptyExpression: 'JSXEmptyExpression',
  JSXExpressionContainer: 'JSXExpressionContainer',
  JSXElement: 'JSXElement',
  JSXClosingElement: 'JSXClosingElement',
  JSXOpeningElement: 'JSXOpeningElement',
  JSXAttribute: 'JSXAttribute',
  JSXSpreadAttribute: 'JSXSpreadAttribute',
  JSXText: 'JSXText',
  YieldExpression: 'YieldExpression',
  AwaitExpression: 'AwaitExpression'
};
